/*

在组件内注册：
componentName: 'ygy',
created () {
  this.$on('go', function (arg) {
  })
}

在父组件中：this.broadcast('ygy', go, arg)
在子组件中：this.dispatch('ygy', go, arg)

*/
export default {
  methods: {
    dispatch (componentName, eventName, arg) {
      // 找到父组件，然后添加emit，触发父组件的on
      var parent = this.$parent
      while(parent.$options.componentName !== componentName) {
        parent = parent.$parent
      }
      parent.$emit(eventName, arg)
    },
    broadcast (componentName, eventName, arg) {
      // 找到子组件，然后添加emit，触发子组件的on
      var children = this.$children
      children.forEach(function(element) {
        if (componentName === element.$options.componentName) {
          element.$emit(eventName, arg)
        } else {
          element.broadcast(componentName, eventName, arg)
        }
      })
    }
  }
}